package cn.tedu._05mvcboot01.controller;

import cn.tedu._05mvcboot01.pojo.dto.UserRegDTO;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

/**
 * 存放用户模块的处理方法
 */
@Controller
public class UserController {
    //处理登录请求方法
    @RequestMapping("/login")
    @ResponseBody
    public String login(){
        return "登陆成功";
    }

    /**
     * 注册功能
     * 请求的URL地址: http://localhost:8080/reg
     * 请求方法: GET
     * 查询参数: username=xxx&password=xxx
     * 返回响应: 恭喜,注册成功
     */
    /*
     * 1.GET请求: http://localhost:8080/reg?username=xxx&password=xxx
     * 2.POST请求: 通过form表单发送 具体见static/reg.html
     */
    @RequestMapping("/reg")
    @ResponseBody
    public String reg(){
        return "恭喜,注册成功";
    }

    /**
     * 接收用户数据方式1: 通过HttpServletRequest对象接收
     * http://localhost:8080/regParam1?username=xxx&password=xxx
     */
    //GET方法
    @RequestMapping("/regParam1")
    @ResponseBody
    public String regParam1(HttpServletRequest request){
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //若为POST方法 则传参时传入的是表单中"name"的属性值
        return username+"---"+password;
    }

    /**
     * 接收用户数据方式2: 通过声明参数方式接收
     * http://localhost:8080/regParam2?username=xxx&password=xxx
     */
    @RequestMapping("regParam2")
    @ResponseBody
    //注意 传参的属性名应与网址中的参数名一致才可成功传参
    public String regParam2(String username,String password){
        return username+"---"+password;
    }

    /**
     * 接收用户数据方式3: 通过POJO类[DTO]接收
     * http://localhost:8080/regParam3?username=xxx&password=xxx
     *
     * 若属性名和参数名未对应(不一致) 则反射不成功 会显示NULL空值
     */
    @RequestMapping("/regParam3")
    @ResponseBody
    public String regParam3(UserRegDTO userRegDTO){
        String username = userRegDTO.getUsername();
        String password = userRegDTO.getPassword();
        return username + "---" + password;
    }
}
